#ifndef OPSIMPLEX
#define OPSIMPLEX

#include "miscutils.h"
#include "opmatriz.h"

#include <time.h>

/*
 * códigos de retorno do simplex:
 * solução ótima encontrada, problema inviável e problema ilimitado
 */
#define SIMPLEX_RET_OT 2
#define SIMPLEX_RET_INV 1
#define SIMPLEX_RET_IL 0
#define SIMPLEX_RET_ERR -1

int simplex(PMatriz A, PMatriz c, PMatriz b, PMatriz x, PMatriz B, PMatriz invB, PMatriz cb, int* Ib, int* In, int m, int n, int* nit);
int simplexDuasFazes(PMatriz A, PMatriz c, PMatriz b, PMatriz x);
int calculaAlphaK(int pk, PMatriz invB, PMatriz A, PMatriz xBarraB, int* Ib, double* alphaK);
double calculaCustoReduzido(int pj, PMatriz c, PMatriz u, PMatriz A);

#endif

